ফোরট্রানে Function এবং Subroutine ডিক্লারেশন
ফোরট্রানে Function এবং Subroutine হল কোডের পুনঃব্যবহারযোগ্য ইউনিট, যা প্রোগ্রামটিকে আরও মডুলার এবং পরিচালনা সহজ করে তোলে। Function এবং Subroutine উভয়ই নির্দিষ্ট কাজ সম্পাদন করার জন্য ব্যবহৃত হয়, তবে তাদের মধ্যে কিছু পার্থক্য রয়েছে।
১. Function ডিক্লারেশন
ফোরট্রানে Function হল একটি ব্লক কোড যা একটি মান (value) রিটার্ন করে। এটি সাধারণত একটি নির্দিষ্ট গণনা বা লজিক্যাল কাজ করার জন্য ব্যবহৃত হয়, এবং একটি single value রিটার্ন করতে সক্ষম। Function ডিক্লারেশনের সময়, আপনাকে ফাংশনের নাম এবং তার রিটার্ন টাইপ (data type) নির্ধারণ করতে হবে।
Function ডিক্লারেশনের সাধারণ গঠন:
function function_name(arguments)
! function body
end function function_name- function_name: ফাংশনের নাম।
- arguments: ফাংশনটির জন্য ইনপুট আর্গুমেন্ট বা প্যারামিটার।
ফাংশন ডিক্লারেশন উদাহরণ:
program function_example
implicit none
real :: result
real :: a, b
! মান ইনপুট
a = 5.0
b = 10.0
! ফাংশন কল
result = add_numbers(a, b)
print *, "The result is: ", result
contains
! ফাংশন ডিক্লারেশন
function add_numbers(x, y)
real :: add_numbers
real :: x, y
add_numbers = x + y ! ফাংশনটি দুইটি সংখ্যা যোগ করে রিটার্ন করবে
end function add_numbers
end program function_exampleএখানে:
add_numbersহল একটি ফাংশন যা দুইটি real ধরণের আর্গুমেন্ট গ্রহণ করে এবং তাদের যোগফল রিটার্ন করে।- ফাংশনটি
add_numbers = x + yএইভাবে কাজ করে, যেখানে এটিxএবংyযোগ করে তার ফলাফল রিটার্ন করে।
ফাংশনের বৈশিষ্ট্য:
- ফাংশনটি সাধারণত একটি একক মান রিটার্ন করে।
- ফাংশন কলের মাধ্যমে এর রিটার্ন মান কোডে ব্যবহার করা যায়।
- ফাংশন ডিক্লারেশন এর মাধ্যমে ইনপুট প্যারামিটার এবং রিটার্ন টাইপের মধ্যে সম্পর্ক স্থাপন করা হয়।
২. Subroutine ডিক্লারেশন
ফোরট্রানে Subroutine একটি কোড ব্লক যা কোনো মান রিটার্ন করে না, বরং এটি সরাসরি কার্যকরী কোড চালায়। Subroutine সাধারণত একাধিক আর্গুমেন্ট গ্রহণ করতে পারে এবং কোডের পুনঃব্যবহারযোগ্য অংশ হিসেবে ব্যবহৃত হয়।
Subroutine ডিক্লারেশনের সাধারণ গঠন:
subroutine subroutine_name(arguments)
! subroutine body
end subroutine subroutine_name- subroutine_name: সাবরুটিনের নাম।
- arguments: সাবরুটিনের ইনপুট প্যারামিটার (ঐচ্ছিক)।
সাবরুটিন ডিক্লারেশন উদাহরণ:
program subroutine_example
implicit none
real :: a, b
! মান ইনপুট
a = 5.0
b = 10.0
! সাবরুটিন কল
call add_numbers(a, b)
contains
! সাবরুটিন ডিক্লারেশন
subroutine add_numbers(x, y)
real :: x, y
print *, "The sum of ", x, " and ", y, " is: ", x + y
end subroutine add_numbers
end program subroutine_exampleএখানে:
add_numbersহল একটি সাবরুটিন যা দুটি আর্গুমেন্ট নেয় এবং তাদের যোগফল স্ক্রীনে প্রিন্ট করে।callকিওয়ার্ডটি সাবরুটিনটি কল করার জন্য ব্যবহৃত হয়।- সাবরুটিন কোনো মান রিটার্ন করে না, এটি সরাসরি কার্যক্রম সম্পাদন করে।
সাবরুটিনের বৈশিষ্ট্য:
- সাবরুটিন কোনো মান রিটার্ন করে না, তবে এটি ইনপুট আর্গুমেন্ট পরিবর্তন করতে পারে (যদি তা
intent(inout)বাintent(out)হিসেবে ডিক্লেয়ার করা থাকে)। - Subroutine-এর মধ্যে কোডের পুনঃব্যবহারযোগ্য অংশ তৈরি করা যায়, যা একই কাজ বারবার করতে ব্যবহৃত হয়।
৩. ফাংশন এবং সাবরুটিনের মধ্যে পার্থক্য
| বৈশিষ্ট্য | Function | Subroutine |
|---|---|---|
| রিটার্ন মান | একটি একক মান রিটার্ন করে | কোনো মান রিটার্ন করে না |
| কল পদ্ধতি | ফাংশন কল করার মাধ্যমে ব্যবহৃত হয় | call কিওয়ার্ড ব্যবহার করে কল করা হয় |
| ইনপুট প্যারামিটার | শুধুমাত্র আর্গুমেন্ট গ্রহণ করে | আর্গুমেন্ট গ্রহণ করতে পারে, তবে এটি মান রিটার্ন করে না |
| ব্যবহার | গাণিতিক বা লজিক্যাল ফলাফল রিটার্ন করতে ব্যবহৃত | কোডের কার্যক্রম সম্পাদন করতে ব্যবহৃত |
৪. ইনপুট প্যারামিটার এবং আর্গুমেন্ট ম্যানিপুলেশন
ফোরট্রানে intent কিওয়ার্ড ব্যবহার করে আপনি একটি প্যারামিটারের উদ্দেশ্য নির্ধারণ করতে পারেন, যেমন intent(in), intent(out), অথবা intent(inout)।
উদাহরণ:
program argument_example
implicit none
real :: a, b
a = 5.0
b = 10.0
call multiply(a, b)
print *, 'The value of a after subroutine call: ', a
print *, 'The value of b after subroutine call: ', b
contains
subroutine multiply(x, y)
real :: x, y
! x কে পরিবর্তন না করে y এর মান গুণ করা
x = x * y
y = y * 2
end subroutine multiply
end program argument_exampleএখানে:
x = x * y:xএর মান পরিবর্তন করা হয়েছে।y = y * 2:yএর মান পরিবর্তন করা হয়েছে।
এটি দেখায় যে intent(inout) বা intent(out) প্যারামিটারগুলির মাধ্যমে ইনপুট এবং আউটপুট প্যারামিটার ম্যানিপুলেশন সম্ভব।
উপসংহার
ফোরট্রানে Function এবং Subroutine উভয়ই কোডের পুনঃব্যবহারযোগ্য অংশ তৈরি করতে ব্যবহৃত হয়, তবে তাদের মধ্যে মৌলিক পার্থক্য রয়েছে। Function একটি একক মান রিটার্ন করে, যেখানে Subroutine সরাসরি কার্যক্রম সম্পাদন করে এবং কোনো মান রিটার্ন করে না। এই দুটি কৌশল আপনাকে আরও মডুলার এবং কার্যকর প্রোগ্রাম তৈরি করতে সাহায্য করবে।
Read more